import static com.google.appengine.api.datastore.FetchOptions.Builder.*

import org.json.simple.JSONArray
import org.json.simple.JSONObject
import org.json.simple.JSONValue

import com.google.appengine.api.datastore.*

def offset = params.offset?.toInteger()
def limit = params.limit?.toInteger()

JSONArray jsoncols = new JSONArray()
JSONObject jsoncol = new JSONObject()
jsoncol.put('id', 'id')
jsoncol.put('label', 'Id')
jsoncol.put('type', 'number')
jsoncols.add(jsoncol)
jsoncol = new JSONObject()
jsoncol.put('id', 'amount')
jsoncol.put('label', 'Amount')
jsoncol.put('type', 'number')
jsoncols.add(jsoncol)
jsoncol = new JSONObject()
jsoncol.put('id', 'description')
jsoncol.put('label', 'Description')
jsoncol.put('type', 'string')
jsoncols.add(jsoncol)
jsoncol = new JSONObject()
jsoncol.put('id', 'createdTime')
jsoncol.put('label', 'Date Time')
jsoncol.put('type', 'string')
jsoncols.add(jsoncol)

def query = new Query('TranscationE')
query.addSort('createdTime', Query.SortDirection.DESCENDING)
query.addFilter('userId', Query.FilterOperator.EQUAL, 'vteial')
PreparedQuery preparedQuery = datastore.prepare(query)
def ttentities = preparedQuery.asIterator(FetchOptions.Builder.withOffset(offset).limit(10) )
JSONArray jsonrows = new JSONArray()
ttentities.each { tentity ->
	JSONArray jsonrowvals = new JSONArray();

	JSONObject jsonrowval = new JSONObject();
	jsonrowval.put('v', new Long(tentity.key.id));
	jsonrowvals.add(jsonrowval)

	jsonrowval = new JSONObject();
	jsonrowval.put('v', new Float(tentity.amount));
	jsonrowvals.add(jsonrowval)

	jsonrowval = new JSONObject();
	jsonrowval.put('v', tentity.description);
	jsonrowvals.add(jsonrowval)

	jsonrowval = new JSONObject();
	jsonrowval.put('v', tentity.createdTime.toString());
	jsonrowvals.add(jsonrowval)

	JSONObject jsonrow = new JSONObject()
	jsonrow.put('c', jsonrowvals)

	jsonrows.add(jsonrow)
}

JSONObject jsonobj = new JSONObject()
jsonobj.put('cols', jsoncols)
jsonobj.put('rows', jsonrows)
////println JSONValue.toJSONString(expenses);
JSONValue.writeJSONString(jsonobj, out);

